package si.yun.dao;

import org.apache.ibatis.annotations.Param;
import si.yun.entity.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @program: ThinkManage
 * @description: 首页
 * @author: 崔晓晨
 * @create: 2021-10-15 09:27
 **/
public interface HomeDao {
    //查询主页轮播图
    List<SyCarousel> selCarouselInfo();
    //查找视频列表  管理端
    List<Map<String,Object>> selCourseInfo();
    //查找视频  用户端
    List<Map<String,Object>> selCourseInfoBefore();
    //获取课程的详细信息
    Map<String,Object> selCourseInformation(@Param("courseId") Integer courseId);
    //查询前台用户详细信息
    SyBeforeUser selBeforeUserInfo(@Param("userId")Integer userId);
    //查看管理人员详细信息
    SyUser selBackUserInfo(@Param("userId")Integer userId);
    //判断某一用户是否已经点赞
    Integer selIfLikeNum(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //点赞视频
    Integer addLikeCourseNum(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //更新视频列表
    Integer updCourseLokeNum(@Param("courseId")Integer courseId);
    //取消视频点赞
    Integer delCourseLikeNum(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //判断用户是否收藏视频
    Integer selColCourseIF(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //收藏视频
    Integer addColCourseInfo(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //更新视频列表中的收藏量
    Integer updCourseColNum(@Param("courseId")Integer courseId);
    //取消收藏
    Integer delColCourseInfo(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //判断该用户是否分享过该视频
    Integer selShareInfoIf(@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //插入分享数据
    Integer addCourseShare(@Param("userId") Integer userId,@Param("courseId") Integer courseId,@Param("shareType")Integer shareType);
    //同步分享数据
    Integer updCourseShareNum(@Param("courseId")Integer courseId);
    //获取当前课程下的相关目录
    Map<String,Object> selCourseClassInfo(@Param("courseId")Integer courseId);
    //获取目录下的的所有课程
    List<Map<String,Object>> selClassCourseList(@Param("classId")Integer classId);
    //获取课程下的评论
    List<Map<String,Object>> selCourseComments(@Param("courseId")Integer courseId);
    //获取移动端人员信息
    SyBeforeUser selBeforeUserName(@Param("userId") Integer userId);
    //获取管理人员信息
    SyUser selBackUserName(@Param("userId") Integer userId);
    //获取评论的是否点赞
    List<Map<String,Object>> selCommentLikeIf(@Param("courseId") Integer courseId,@Param("userId") Integer userId);
    //点赞评论
    Integer addCommentLike(@Param("commentId") Integer commentId,@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //取消评论
    Integer delCommentLike(@Param("commentId") Integer commentId,@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //获取课程下的评论总数
    Integer selCommentCountNum(@Param("courseId") Integer courseId);
    //同步评论点赞总数
    Integer updCommentCountNum(@Param("courseId") Integer courseId,@Param("commentId") Integer commentId);
    //添加留言
    Integer addCommentInfo(@Param("userId") Integer userId, @Param("courseId") Integer courseId, @Param("content") String content);
    //删除个人评论 更改状态为删除
    Integer updCommentStatusDel(@Param("commentId") Integer commentId,@Param("userId") Integer userId,@Param("courseId") Integer courseId);
    //删除被删除的评论的点赞量
    Integer delCommentLikeStatus(@Param("commentId") Integer commentId,@Param("courseId") Integer courseId);
    //优惠券使用查询
    List<Map<String,Object>> selCouponUserInfo(@Param("userId") Integer userId,@Param("productType") Integer productType);
    //添加购物订单
    Integer addCourseOrder(SyUserOrderUsed userOrder);
    //添加商品订单
    Integer addProductOrder(SyUserOrderUsed userOrder);
    //获取当先购买用户是否在指定课程下评论
    Integer selUserIdCommentNum(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("orderType") Integer orderType);
    //付款成功后更改订单状态
    Integer updCourseOrderStatus(SyPaySuccessInfo map);
    //免费付款成功后更改订单状态
    Integer updCourseFreeOrderStatus(SyPaySuccessInfo map);
    //更改优惠券的使用情况
    Integer updCouponUsedStatus(@Param("usedId") Integer usedId,@Param("userId") Integer userId,@Param("orderId") Integer orderId);
    //获取商品的类型
    Map<String,Object> selOrderType(@Param("orderNo") String orderNo,@Param("userId") Integer userId);
    //取消订单
    Integer updOrderStatus(@Param("orderId") Integer orderId,@Param("remarks") String remarks);
    //获取未付款的订单
    List<Map<String,Object>> selWaitPayOrderInfo ();
    //判断该用户是否拥有指定视频的播放资格
    Map<String,Object> getPlayQualifications(@Param("userId") Integer userId,@Param("productId") Integer productId);
    //更新用户消费金额
    Integer updUserConsumption(@Param("userId") Integer userId, @Param("totalAmount") BigDecimal totalAmount);
    //更新课程的销量
    Integer updcourseOrderNum(@Param("courseId") Integer courseId, @Param("orderType") Integer orderType);
    //添加浏览量
    Integer updUserLookNum(@Param("courseId") Integer courseId);
    //分享课程数量+1
    Integer addCourseSharing(@Param("id") Integer id);
    //查看管理端教师的详情
    Map<String,Object> selTeaInfo(@Param("userId")Integer userId);
    //查询指定人物的课程
    List<Map<String,Object>> selCourseUserInfo(@Param("userId")Integer userId,@Param("type")Integer type);
    //添加商品订单时候，添加商品的收货地址
    Map<String,Object> selPrUserAddress(@Param("userId")Integer userId);
    //获取地区对应的地址
    Map<String,Object> selAddressName(@Param("regionId")Integer regionId);
    //创建商品的购物车订单
    Integer addProductShopOrder(SyUserOrderUsed userOrder);
    //添加购物车专属订单的扩展商品
    Integer addShopOrderInfo(SyUserOrderUsed userOrder);
}
